package 力扣.并查集;

import java.text.FieldPosition;

public class 模板 {

    //查询大哥
    private int Find(int x){
        if (F[x] == x){
            return x;
        }
        return F[x] = Find(F[x]);
    }
    //合并
    private void Union(int x,int y){
        F[Find(x)] = Find(y);
        count--;
    }
    private void Union2(int x,int y){
        int xpar = Find(x);
        int ypar = Find(y);
        if (xpar != ypar){
            F[xpar] = ypar;
            Cnt[ypar] += Cnt[xpar];
            count--;
        }
    }

    int[] F;//并查集数组
    int count = 0;//记录并查集中集合的个数
    int[] Cnt;//记录集合中的个数。注意：在记录集合中元素个数的时候，只有根结点（老大）的信息是准确的

    //并查集初始化
    void init(int n){
        F = new int[n];
        Cnt = new int[n];
        for (int i = 0; i < n; i++) {
            F[i] = i;
            Cnt[i] = 1;
        }
        count = n;
    }
    //查找元素所在集合中的元素的个数
    int size(int i){
        return Cnt[Find(i)];
    }

}
